package delphorm.web.aspect;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;

import org.springframework.aop.MethodBeforeAdvice;

import delphorm.entite.personne.Utilisateur;
import delphorm.service.personne.IPersonne;


public class VerifParamsIdUtilisateur implements MethodBeforeAdvice
{
	IPersonne servicePersonne;
	
	public void before(Method method, Object[] arguments, Object target) 
	throws Throwable {
		
		HttpServletRequest request = (HttpServletRequest)arguments[0];
		String idUStr = request.getParameter("idutilisateur");
		
		//vérifie la présence du paramètre
		if(idUStr == null)
			throw new delphorm.web.exception.ParametreException("parametre.obligatoire","idutilisateur");
		
		//vérifie que c'est un Long
		long idU;
		try {
			idU = Long.parseLong(idUStr);
		} catch (NumberFormatException e) {
			throw new delphorm.web.exception.ParametreException("parametre.mauvaisformat","idutilisateur");
		}		
		
		//vérifie que l'utilisateur existe
		Utilisateur u = servicePersonne.chercherUtilisateurParId(new Long(idU));
		if(u==null)
			throw new delphorm.web.exception.ParametreException("parametre.invalide","idutilisateur");
		
	}

	public IPersonne getServicePersonne() {
		return servicePersonne;
	}

	public void setServicePersonne(IPersonne servicePersonne) {
		this.servicePersonne = servicePersonne;
	}	
}
